import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken ,setRefershToken,getRefershToken,removeRefershToken} from '@/utils/auth'

const useUserStore = defineStore(
  'user',
  {
    state: () => ({
      token: getToken(),   // token
      refershToken:getRefershToken() , // refreshToken
      // TODO： 这里可能会定义成一个对象userInfo，收集很多的用户资料
      name: '', // 用户名
      avatar: '',  // 用户头像
    }),
    actions: {
      // 登录 
      async login(userInfo) {
        // console.log(userInfo)
        // 调用API下面的登录的请求方法，发起登录请求
        let res = await login(userInfo)
        // 获取到了token，设置给state
        this.token = res.data.token
        this.refershToken=res.data.refresh_token
        // 存储起来到本地
        setToken(res.data.token)
        setRefershToken(res.data.refresh_token)
        
      },
      // 获取用户信息 
      async getInfo() {
        let res = await getInfo()
        console.log( res.data.userinfo)
        if(res.status===200){
          this.name = res.data.data.userinfo.username
          this.avatar = res.data.data.userinfo.avatar
          return res.data.data.userinfo
        }
        this.name = res.data.userinfo.username
        this.avatar = res.data.userinfo.avatar
        return res.data.userinfo
      },
      // 退出系统
      logOut() {
        this.token = ''
        this.refershToken=''
        removeToken()
        removeRefershToken()
        // return new Promise((resolve, reject) => {
        //   logout(this.token).then(() => {
        //     this.token = ''
        //     removeToken()
        //     resolve()
        //   }).catch(error => {
        //     reject(error)
        //   })
        // })
      }
    }
  })

export default useUserStore
